1. Field
Example embodiments relate to video compression, for example, video picture skipping.
2. Description of the Related Art
Video signals containing a large volume of data may often be encoded or compressed for transmission. A video player may reconstruct the video signal by decoding the encoded video signal and may display pictures corresponding to the reconstructed video signal.
FIG. 1 is a block diagram illustrating a conventional configuration of a video encoder. The video encoder may include a buffer 1, a temporal redundancy removing unit 2, a transform unit 3, a quantizing unit 4, an entropy encoding unit 5 and a bitstream generating unit 6.
The buffer 1 may temporarily store video signals received by the video encoder. The temporal redundancy removing unit 2 may remove temporal redundancy using a similarity between video frames stored in the buffer 1. The temporal redundancy removing unit 2 may generate an estimated frame with respect to a present frame in reference to one or more previous frame(s) or future frame(s), and may generate a residual frame by subtracting the estimated frame from the present frame. In other words, the temporal redundancy removing unit 2 may receive the present frames and output motion vectors and the residual frame.
The transform unit 3 and the quantizing unit 4 may remove a spatial redundancy using similarity between adjacent samples in the residual frame. The transform unit 3 may perform a transform operation with respect to the residual frame. Conventional video encoders, for example, MPEG-2, MPEG-4, H.264 and other similar video encoders may use an 8×8 or 4×4 block DCT (discrete cosine transform). DCT may also be widely used in still image compression, for example, JPEG.
Recently, methods for wavelet transform have been studied. A wavelet transform may convert the residual frame, frame by frame rather than by 8×8 blocks or 4×4 blocks. JPEG2000 for compressing still images may employ a wavelet transform. Typically, the transformed residual frame may have its energy concentrated in low frequency band. The quantizing unit 4 may quantize each of the pixels (transform coefficients) of the transformed residual frame. Most coefficients corresponding to high frequency band may become zeros as a result of quantization.
The entropy encoding unit 5 may perform lossless compression with respect to the quantized transform coefficients. Lossless compression algorithms may include variable length coding, arithmetic coding and other similar algorithms.
The bitstream generating unit 6 may generate a bitstream containing coded frames, coded motion vectors and header information.
A video decoder reconstructs frames by decoding the coded frames using a reverse process from the video encoding process. The video decoder may obtain the quantized transform coefficients by entropy decoding with respect to the coded frames in the bitstream and generate the residual frame by inverse transform and inverse quantization with respect to the quantized transform coefficients. The video decoder may reconstruct the residual frame in reference to the previously reconstructed residual frame with the motion vectors. Video frames reconstructed in the video decoder may be transformed to display signals to be displayed. For example, frames represented by YcbCr color space may be transformed to images in RGB color space and the images in RGB color space transformed into NTSC signals or PAL signals to be provided to a display device.
In general, video images are played with sound rather than images alone. The video images and the sound are necessarily synchronized to each other. When the video images are not synchronized with the sound, some frames may be skipped for synchronization of the video images and the sound during the video decoding process. In other examples, a frame rate of the compressed video data input to the video player may be different from that of images to be displayed when, for example, a user commands fast playback to the video player. The video player skips some frames, decodes remaining frames and reconstructs video images.
FIG. 2 is a block diagram illustrating a configuration of a conventional picture decoding/skipping device. The video decoder 30 operates in association with a picture elementary stream (PES) decoding circuit 10 and a bitstream buffer 20.
The PES decoding circuit 10 may include a PES decoder 11, a picture head detector 12, a picture type detector 13, a shippable picture register 14 for storing current counter value of a shippable P picture and a tag information inserter 15 for inserting a picture counter as additional header information before the next video data header following the picture header. The picture header detector 12 may include a counter to count the picture header.
The bitstream buffer 20 may output video elementary stream (ES) including some extra information upon request from the video decoder 30. A part of an external memory may be used for the bitstream buffer 20.
The video decoder 30 may be a video decoder for decoding common MPEG-2 video data supplemented with a picture decoding controller 31 capable of controlling the video decoder to skip P pictures. The picture decoding controller 31 may perform ordinary operations, for example, decoding picture headers and at the same time extracts the picture number, which is inserted additionally at the previous stage, to acknowledge the picture number as a current counter value to the PES decoding circuit 10. In such a way, the picture decoding controller 31 may control the picture skipping operation using information, for example, picture number and a picture type regarding current P picture received from the PES decoding circuit 10.
The PES decoding circuit 10 may include the picture header detector 12 to detect picture header in the video bitstream while decoding PES. The picture header detector 12 may count from zero to M−1 every picture using a counter with given bits. M may be determined by a possible number of pictures stored in the video buffer. When the counter reaches M−1, the counter counts all over again starting from zero. The counted number of the picture header is sent to the tag information inserter 15 in the PES decoding circuit 10. The PES decoding circuit 10 may also include the picture type detector 13 for detecting picture type simultaneously with detecting the picture header.
The tag information inserter 15 may insert tag information in front of (for example, immediately in front of) a video stream header, for example, picture extension header or user data header, which follows a picture header. The tag information, inserted to facilitate the operation of the video decoder 30, may contain a header and a counter value. The header may include a start code X, which may have one-byte data followed by a start code prefix having three-byte data 0, 0, 1 and defined in MPEG-2 video specification. The start code X may be established by a user and may be referred to later, for example, after being stored in a register.
This information may be used when the picture decoding controller 31 of the video decoder 30 extracts a picture header number. The header is followed by data attached to the picture header number that is as long as a length of the counter bits M.
The picture type detector 13 may store previous picture type data and extract picture type data following the current picture header. When the previous picture type is a P type and the current picture type is an I type, the picture type detector 13 may send a count value corresponding to the previous picture, that is, a count value subtracting 1 from the current picture count value to the shippable picture register 14.
The shippable picture register 14 may include N stages of registers to store valid picture numbers (numbers of shippable P pictures) from the picture type detector 13. The shippable picture register 14 may include a valid register controlling unit to designate a number of a register storing a number of a shippable P picture which may be used first among the pictures in the buffer.
The valid register controlling unit may include a device verifying the existence of more than one valid data. If any valid data exists, the valid register controlling unit may compare a currently displayed valid shippable picture number with a currently decoded picture number of a picture at every clock and send it to the video decoder 30.
When the valid shippable picture number becomes equal to the picture number of the presently decoded picture and a value of the next register, the value of the next register may be output as a valid shippable picture number.
According to such conventional methods, some P pictures as well as B pictures may be skipped. The conventional methods may not satisfy presentation time stamp (PTS) requirements or overcome a difference of frame rates, but may prevent image distortion or overflow of a video buffer.
A shippable buffer should be a picture, (hereinafter referred to as “non-reference picture”) which is not referred by any other pictures, or not be a picture, (hereinafter referred to as “reference picture”) which is referred to by any other pictures. That is, when a reference picture is skipped, a picture referring to the skipped reference picture may not be decoded.
Recent video coding methods have been designed to determine whether to skip or not using a picture type or a picture number as the conventional technique does because a B picture may be used as a reference picture. For example, it is difficult for a video decoder receiving a bitstream encoded by a video coding method such as H.264, in which a B picture may be used as a reference picture, to determine whether to skip or not simply by using a picture type or a picture number. However, such video decoder also requires a picture skip function.